package main

import (
	"fmt"
	"os"
)

// type FileInfo interface {
//     Name() string       // 文件名称
//     Size() int64        // 文件大小
//     Mode() FileMode     // 文件权限
//     ModTime() time.Time // 文件修改时间
//     IsDir() bool        // 是否是文件夹
//     Sys() interface{}   // 基础数据源接口(可以返回nil)}

// }

func main() {
	fileInfo, err := os.Stat("./main37.go")
	if err != nil {
		fmt.Println("error:", err)
	}
	fmt.Println(fileInfo.Name(), fileInfo.Size(), fileInfo.Mode())
	// mkdir 创建文件夹
	err2 := os.Mkdir("testdir", os.ModePerm)
	if err2 != nil {
		fmt.Println(err2)
	}
	//mkdirall 创建多级文件夹
	err3 := os.MkdirAll("testdir/test/aa", os.ModePerm)
	if err3 != nil {
		fmt.Println(err3)
	}
	// 创建文件
	file, err4 := os.Create("main39.go")
	if err4 != nil {
		fmt.Println(err4)
	}
	fmt.Println(file)

	//读写文件

	//通过Open只读方式打开文件
	file5, err5 := os.Open("main39.go")
	if err5 != nil {
		fmt.Println(err5)
	}
	fmt.Println(file5.Name())
	defer file5.Close()
	// 只读模式 | 只写模式 | 不存在就创建
	file6, err6 := os.OpenFile("main40.go", os.O_RDONLY|os.O_WRONLY|os.O_CREATE, os.ModePerm)
	if err6 != nil {
		fmt.Println(err6)
	}
	fmt.Println(file6)
	file6.Close()
}
